PEP 3143
PEP 3143,全称为"Standard daemon process library",是一个关于在Python标准库中引入守护进程库的提案。守护进程(daemon)是在Unix和类Unix系统中在后台运行且不与用户直接交互的进程。PEP 3143的目标是提供一个简单的接口,使编写表现良好的Unix守护进程变得更为容易。
以下是PEP 3143的主要内容和关键点:
背景与动机:
- 编写一个成为良好行为的Unix守护进程的程序是复杂且容易出错的,但无论程序需要做什么,守护进程所需执行的步骤大体上都是相同的。
- PEP 3143的目的是向Python标准库引入一个包,该包为成为守护进程的任务提供了一个简单的接口。
守护进程的正确行为:
- 关闭所有打开的文件描述符。
- 改变当前工作目录。
- 重置文件访问创建掩码。
- 在后台运行。
- 与进程组解除关联。
- 忽略终端I/O信号。
- 与控制终端解除关联。
- 不要重新获取控制终端。
实现:
- PEP 3143引入了一个
DaemonContext
类,它保存了程序的行为和配置的进程环境。DaemonContext
实例可以用作上下文管理器来进入守护进程状态。 - PEP 3143还包含了一个参考实现和其他守护进程实现的例子。
- PEP 3143引入了一个
状态:
- PEP 3143目前的状态是"Deferred"(推迟)。这表示对该PEP中涵盖的概念的进一步探索已经被推迟,因为目前没有对该提案感兴趣并愿意推动其发展的主要推动者。
影响:
- 如果PEP 3143被接受并实现,它将为Python开发者提供一个简单而强大的方式来编写和管理Unix守护进程。
参考:
- PEP 3143的许多要求和建议都来源于已故的W. Richard Stevens的Unix网络编程书籍('UNP')。
总的来说,PEP 3143是一个旨在简化Unix守护进程编写的提案,它引入了一个DaemonContext
类和一个参考实现,以帮助Python开发者更容易地创建和管理守护进程。然而,由于当前没有对该提案的主要推动者,它的实现已经被推迟。